home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / grafik / bildanzeiger / superview-lib_dev / example_svoperators / extractgrayscales / sp_asmpart.a < prev    next >
Text File  |  1995-03-09  |  8KB  |  297 lines

  1. ; * ************************************************************************ *
  2. ; * 'ExtractGrayScales.svoperator' V1.1                                              *
  3. ; * ************************************************************************ *
  4. ; * (c) 1993-94 by Andreas Ralph Kleinert. All rights reserved.              *
  5. ; * This code can be used to create the 'ExtractGrayScales.svoperator'.              *
  6. ; * THIS IS NOT ALLOWED WITHOUT SPECIAL PERMISSION BY THE AUTHOR !!!         *
  7. ; * ************************************************************************ *
  8. ; * Address         : Andreas R. Kleinert                     *
  9. ; *               Grube Hohe Grethe 23                     *
  10. ; *               D-57074 Siegen                         *
  11. ; *               Germany                             *
  12. ; * ************************************************************************ *
  13.  
  14. ; * ************************************************************************ *
  15. ; * Module         : SD_AsmPart.a                         *
  16. ; * Version         : V1.1                             *
  17. ; * Last updated     : 29.10.1994                                            *
  18. ; * Includes         : V40-Includes                                          *
  19. ; * Compiler         : SAS/C V6.51 (ASM)                                     *
  20. ; * Compiler-Options : (smakefile)                                           *
  21. ; * ************************************************************************ *
  22.  
  23.   INCLUDE "exec/types.i"
  24.   INCLUDE "exec/execbase.i"
  25.   INCLUDE "exec/initializers.i"
  26.   INCLUDE "exec/libraries.i"
  27.   INCLUDE "exec/resident.i"
  28.  
  29. VERSION  EQU 1
  30. REVISION EQU 1
  31.  
  32.   XREF _LinkerDB
  33.  
  34.   XREF _LVOOpenLibrary
  35.   XREF _LVOCloseLibrary
  36.   XREF _LVORemove
  37.   XREF _LVOFreeMem
  38.  
  39.   XREF _SVLI_InitSVDList          ; library-internal initialization function
  40.  
  41.   XREF _SVP_AllocHandle
  42.   XREF _SVP_FreeHandle
  43.   XREF _SVP_DoOperation
  44.  
  45.   STRUCTURE SVOperatorBase,0
  46.    STRUCT svb_LibNode,LIB_SIZE
  47.    ULONG  svb_SVOperator
  48.  
  49.    ULONG  svb_Reserved,32
  50.  
  51.    ULONG  svb_SegList
  52.    ULONG  svb_SysBase
  53.    ULONG  svb_DOSBase
  54.    ULONG  svb_IntuitionBase
  55.    ULONG  svb_GfxBase
  56.    ULONG  svb_SVSupportBase
  57.   LABEL  svb_SIZEOF
  58.  
  59.   SECTION svb_lib,CODE
  60. ;-------------- `Notausgang` ------------------------------------------------
  61. Start:    moveq #0,d0
  62.     rts
  63. ;-------------- Resident-Struktur -------------------------------------------
  64.  
  65.  
  66. ROMTag:
  67.      dc.w RTC_MATCHWORD
  68.      dc.l ROMTag         ; ptr to itself
  69.      dc.l EndResident    ; ptr to end of Resident-Structure
  70.      dc.b RTF_AUTOINIT   ; Initialisierungsart
  71.      dc.b VERSION         ; Version
  72.      dc.b NT_LIBRARY     ; Node-Typ
  73.      dc.b REVISION         ; Prioritaet
  74.      dc.l SVLibName      ; Name
  75.      dc.l SVLibID         ; LibIDString
  76.      dc.l InitTab         ; ptr to InitTab
  77.  
  78. SVLibName:    dc.b 'ExtractGrayScales.svoperator',0
  79. SVLibID:    dc.b 'ExtractGrayScales 1.1 (29.10.94)',13,10,0
  80. AKCopyright:    dc.b '(c) 1994 by Andreas R. Kleinert',0
  81. DosName:    dc.b 'dos.library',0
  82. IntuitionName:    dc.b 'intuition.library',0
  83. GfxName:    dc.b 'graphics.library',0
  84. SVSupportName:  dc.b 'superviewsupport.library',0
  85.         ds.w 0
  86.  
  87. EndResident:
  88.  
  89.  
  90. ;-------------- Funktionstabellen fuer InitStruct u.a. ----------------------
  91. InitTab:
  92.      dc.l svb_SIZEOF      ; LibBase-Size
  93.      dc.l FuncTab          ; Function-Table begin
  94.      dc.l DataTab          ; Data-Table begin
  95.      dc.l InitLib          ; ptr to InitLib
  96. FuncTab:
  97.      dc.l OpenLib          ; internal functions
  98.      dc.l CloseLib
  99.      dc.l ExpungeLib
  100.      dc.l ExtFuncLib
  101.  
  102.          dc.l _SVP_AllocHandle
  103.          dc.l _SVP_FreeHandle
  104.          dc.l _SVP_DoOperation
  105.  
  106.      dc.l -1
  107. DataTab:
  108.      INITBYTE LN_TYPE,NT_LIBRARY
  109.      INITLONG LN_NAME,SVLibName
  110.      INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
  111.      INITWORD LIB_VERSION,VERSION
  112.      INITWORD LIB_REVISION,REVISION
  113.      INITLONG LIB_IDSTRING,SVLibID
  114.      dc.l 0
  115.  
  116. ;-------------- InitLib (Initialisieren der Library) ---------------------------
  117. ;     A0 : &SegList
  118. ;     A6 : &SysBase
  119. ;     D0 : &SVLibrary
  120.  
  121. InitLib:
  122.       movem.l a4-a5,-(sp)       ; a4 und a5 auf Stack retten
  123.  
  124.       lea     _LinkerDB,a4        ; _LinkerDB  -> A4
  125.       move.l d0,a5            ; &SVLibrary -> A5
  126.  
  127.       move.l a6,_SysBase(a4)    ; &SysBase retten
  128.  
  129.       move.l a6,svb_SysBase(a5)  ; &SysBase   -> SVLibrary.svb_SysBase
  130.       move.l a0,svb_SegList(a5)  ; &SegList   -> SVLibrary.svb_SegList
  131.  
  132.       lea DosName,a1
  133.       move.l #39,d0
  134.       LINKLIB _LVOOpenLibrary,_SysBase
  135.       move.l d0,_DOSBase
  136.       move.l d0,svb_DOSBase(a5)        ; save it !
  137.  
  138.       lea IntuitionName,a1
  139.       move.l #39,d0
  140.       LINKLIB _LVOOpenLibrary,_SysBase
  141.       move.l d0,_IntuitionBase
  142.       move.l d0,svb_IntuitionBase(a5)  ; save it !
  143.  
  144.       lea GfxName,a1
  145.       move.l #39,d0
  146.       LINKLIB _LVOOpenLibrary,_SysBase
  147.       move.l d0,_GfxBase
  148.       move.l d0,svb_GfxBase(a5)        ; save it !
  149.  
  150.       lea SVSupportName,a1
  151.       move.l #1,d0
  152.       LINKLIB _LVOOpenLibrary,_SysBase
  153.       move.l d0,_SVSupportBase
  154.       move.l d0,svb_SVSupportBase(a5)        ; save it !
  155.  
  156.           tst.l _DOSBase
  157.           beq InitLib_Fail
  158.           tst.l _IntuitionBase
  159.           beq InitLib_Fail
  160.           tst.l _GfxBase
  161.           beq InitLib_Fail
  162.           tst.l _SVSupportBase
  163.           beq InitLib_Fail
  164.  
  165.       move.l a5,_SVOperatorBase        ; save Base Address for internal use
  166.  
  167.           jsr _SVLI_InitSVDList
  168.  
  169.       move.l a5,d0                    ; return &SVOperatorBase
  170.  
  171.           jmp InitLib_RTS
  172.  
  173. InitLib_Fail:
  174.  
  175.       moveq #0,d0                ; NULL !
  176.  
  177. InitLib_RTS:
  178.  
  179.       movem.l (sp)+,a4-a5
  180.       rts
  181.  
  182.  
  183. ;-------------- OpenLib (Oeffnen der Library) ----------------------------------
  184. OpenLib:
  185.         addq.w #1,LIB_OPENCNT(a6)          ; LIB_OPENCNT ++
  186.         bclr   #LIBB_DELEXP,LIB_FLAGS(a6)  ; clear LIBF_DELEXP
  187.         move.l a6,d0               ; return &SVOperatorBase
  188.  
  189.         rts
  190.  
  191. ;-------------- CloseLib (Schliessen der Library) ------------------------------
  192. CloseLib:
  193.         moveq #0,d0
  194.         subq.w #1,LIB_OPENCNT(a6)          ; LIB_OPENCNT --
  195.         bne.s EndCloseLib           ; wenn nicht null, Abbruch
  196.         btst #LIBB_DELEXP,LIB_FLAGS(a6)    ; Test auf LIBF_DELEXP
  197.         beq.s EndCloseLib           ; wenn Null, Abbruch
  198.         bsr.s ExpungeLib           ; wenn gesetzt, ExpungeLib
  199. EndCloseLib:
  200.         rts
  201.  
  202. ;-------------- ExpungeLib (Entfernen der Library) ----------------------------
  203. ExpungeLib:
  204.         movem.l d2/a5/a6,-(sp)
  205.  
  206.         move.l a6,a5               ; &SVLibrary retten
  207.         move.l _SysBase,a6           ; ExecBase to A6
  208.         tst.w LIB_OPENCNT(a5)              ; test LIB_OPENCNT
  209.         beq.s NoOpenLib            ; ...
  210.         bset #LIBB_DELEXP,LIB_FLAGS(a5)    ; set LIBF_DELEXP flag
  211.         moveq #0,d0               ; Ptr auf Segmentliste
  212.         jmp   ExpungeLibEnd           ;
  213. NoOpenLib:
  214.         move.l svb_SegList(a5),d2           ; SegList retten
  215.  
  216.         move.l a5,a1               ; &SVLibrary nach A1 (Par.)
  217.         LINKLIB _LVORemove,_SysBase       ; Library-Node entfernen
  218.  
  219.         move.l _DOSBase,a1
  220.         LINKLIB _LVOCloseLibrary,_SysBase
  221.  
  222.         move.l _IntuitionBase,a1
  223.         LINKLIB _LVOCloseLibrary,_SysBase
  224.  
  225.         move.l _GfxBase,a1
  226.         LINKLIB _LVOCloseLibrary,_SysBase
  227.  
  228.         move.l _SVSupportBase,a1
  229.         LINKLIB _LVOCloseLibrary,_SysBase
  230.  
  231.         moveq  #0,d0               ; D0 loeschen
  232.         move.l a5,a1               ; &SVLibrary nach A1 (Par.)
  233.         move.w LIB_NEGSIZE(a5),d0          ; Groesse der
  234.         sub.l d0,a1               ; Library
  235.         add.w LIB_POSSIZE(a5),d0           ; ermitteln !!!
  236.  
  237.         LINKLIB _LVOFreeMem,_SysBase       ; Speicher freigeben
  238.         move.l d2,d0               ; &SegList zurueckgeben
  239. ExpungeLibEnd:
  240.         movem.l (sp)+,d2/a5/a6
  241.         rts
  242.  
  243. ;-------------- ExtFuncLib (bis einschl. OS V2.04 unbenutzt) ---------------
  244. ExtFuncLib:
  245.  
  246.         moveq #0,d0         ; Ist nie falsch ........ - oder ?
  247.         rts
  248.  
  249. ;-------------- Eigene Funktionen ------------------------------------------
  250.  
  251.   SECTION __MERGED,BSS
  252.  
  253. _SVOperatorBase:    ds.l 1
  254. _SysBase:    ds.l 1
  255. _DOSBase:    ds.l 1
  256. _IntuitionBase: ds.l 1
  257. _GfxBase:    ds.l 1
  258. _SVSupportBase:    ds.l 1
  259.  
  260. _XCEXIT:    ds.l 1      ; dummy-values to get the compiler's libs work :
  261. __XCEXIT:    ds.l 1
  262. _ONBREAK:    ds.l 1
  263. __ONBREAK:    ds.l 1
  264. __base:     ds.l 1
  265. ___base:     ds.l 1
  266. _ProgramName:    ds.l 1
  267. __ProgramName:    ds.l 1
  268. _StackPtr:    ds.l 1
  269. __StackPtr:    ds.l 1
  270. _oserr:     ds.l 1
  271. __oserr:    ds.l 1
  272. _OSERR:     ds.l 1
  273. __OSERR:    ds.l 1
  274.  
  275.   XDEF _SVOperatorBase
  276.   XDEF _SysBase
  277.   XDEF _DOSBase
  278.   XDEF _IntuitionBase
  279.   XDEF _GfxBase
  280.   XDEF _SVSupportBase
  281.  
  282.   XDEF _XCEXIT
  283.   XDEF __XCEXIT
  284.   XDEF _ONBREAK
  285.   XDEF __ONBREAK
  286.   XDEF __base
  287.   XDEF ___base
  288.   XDEF _ProgramName
  289.   XDEF __ProgramName
  290.   XDEF _StackPtr
  291.   XDEF __StackPtr
  292.   XDEF _oserr
  293.   XDEF __oserr
  294.   XDEF _OSERR
  295.   XDEF __OSERR
  296.         END
  297.